{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# DAY6 多元线性回归\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 1: 预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'\\nR&D Spend,Administration,Marketing Spend,State,Profit\\n145372.41,118671.85,383199.62,New York,182901.99\\n119943.24,156547.42,256512.92,Florida,132602.65\\n86419.7,153514.11,0,New York,122776.86\\n66051.52,182645.56,118148.2,Florida,103282.38\\n20229.59,65947.93,185265.1,California,81229.06\\n55493.95,103057.49,214634.81,Florida,96778.92\\n46014.02,85047.44,205517.64,New York,96479.51\\n44069.95,51283.14,197029.42,California,89949.14\\n15505.73,127382.3,35534.17,New York,69758.98\\n1000.23,124153.04,1903.93,Florida,64926.08\\n1315.46,115816.21,297114.46,California,49490.75\\n0,135426.92,0,Florida,42559.73\\n542.05,51743.15,0,New York,35673.41\\n0,116983.8,45173.06,California,14681.4\\n23893.98,95828.11,139539.01,California,87192.8\\n39284.63,146995.4,205349.4,Florida,134307.35\\n19242.01,156545.94,215069.15,New York,112278.57\\n30360.16,93288.41,205511.67,California,84608.19\\n26480.77,98452.15,174999.3,Florida,78449.95\\n21967.49,92876.33,145419.5,California,65200.33\\n28532.28,128717.8,156547.42,New York,61745.16\\n30745.49,122699.52,170069.77,Florida,67245.22\\n0,108679.17,304981.62,New York,112784.5\\n51363.51,103057.49,214634.81,California,92780.68\\n39709.56,127382.3,35534.17,New York,79653.2\\n41859.62,111841.88,296868.93,Florida,87558.09\\n'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "ename": "",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click <a href='https://aka.ms/vscodeJupyterKernelCrash'>here</a> for more info. View Jupyter <a href='command:jupyter.viewOutput'>log</a> for further details."
     ]
    }
   ],
   "source": [
    "'''\n",
    "R&D Spend,Administration,Marketing Spend,State,Profit\n",
    "145372.41,118671.85,383199.62,New York,182901.99\n",
    "119943.24,156547.42,256512.92,Florida,132602.65\n",
    "86419.7,153514.11,0,New York,122776.86\n",
    "66051.52,182645.56,118148.2,Florida,103282.38\n",
    "20229.59,65947.93,185265.1,California,81229.06\n",
    "55493.95,103057.49,214634.81,Florida,96778.92\n",
    "46014.02,85047.44,205517.64,New York,96479.51\n",
    "44069.95,51283.14,197029.42,California,89949.14\n",
    "15505.73,127382.3,35534.17,New York,69758.98\n",
    "1000.23,124153.04,1903.93,Florida,64926.08\n",
    "1315.46,115816.21,297114.46,California,49490.75\n",
    "0,135426.92,0,Florida,42559.73\n",
    "542.05,51743.15,0,New York,35673.41\n",
    "0,116983.8,45173.06,California,14681.4\n",
    "23893.98,95828.11,139539.01,California,87192.8\n",
    "39284.63,146995.4,205349.4,Florida,134307.35\n",
    "19242.01,156545.94,215069.15,New York,112278.57\n",
    "30360.16,93288.41,205511.67,California,84608.19\n",
    "26480.77,98452.15,174999.3,Florida,78449.95\n",
    "21967.49,92876.33,145419.5,California,65200.33\n",
    "28532.28,128717.8,156547.42,New York,61745.16\n",
    "30745.49,122699.52,170069.77,Florida,67245.22\n",
    "0,108679.17,304981.62,New York,112784.5\n",
    "51363.51,103057.49,214634.81,California,92780.68\n",
    "39709.56,127382.3,35534.17,New York,79653.2\n",
    "41859.62,111841.88,296868.93,Florida,87558.09\n",
    "'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入必要的库\n",
    "# 提示: 需要导入 pandas 和 numpy\n",
    "\n",
    "# 从 CSV 文件中读取数据\n",
    "# 提示: 使用 pandas 的 read_csv 方法加载 'company.csv' 文件\n",
    "\n",
    "# 划分数据集为自变量 X 和因变量 Y\n",
    "# 提示: 使用 pandas 的 iloc 方法对数据集进行划分\n",
    "# X 应包含除了最后一列之外的所有列\n",
    "# Y 应包含最后一列\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>R&amp;D Spend</th>\n",
       "      <th>Administration</th>\n",
       "      <th>Marketing Spend</th>\n",
       "      <th>State</th>\n",
       "      <th>Profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>145372.41</td>\n",
       "      <td>118671.85</td>\n",
       "      <td>383199.62</td>\n",
       "      <td>New York</td>\n",
       "      <td>182901.99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>119943.24</td>\n",
       "      <td>156547.42</td>\n",
       "      <td>256512.92</td>\n",
       "      <td>Florida</td>\n",
       "      <td>132602.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>86419.70</td>\n",
       "      <td>153514.11</td>\n",
       "      <td>0.00</td>\n",
       "      <td>New York</td>\n",
       "      <td>122776.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>66051.52</td>\n",
       "      <td>182645.56</td>\n",
       "      <td>118148.20</td>\n",
       "      <td>Florida</td>\n",
       "      <td>103282.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20229.59</td>\n",
       "      <td>65947.93</td>\n",
       "      <td>185265.10</td>\n",
       "      <td>California</td>\n",
       "      <td>81229.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>55493.95</td>\n",
       "      <td>103057.49</td>\n",
       "      <td>214634.81</td>\n",
       "      <td>Florida</td>\n",
       "      <td>96778.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>46014.02</td>\n",
       "      <td>85047.44</td>\n",
       "      <td>205517.64</td>\n",
       "      <td>New York</td>\n",
       "      <td>96479.51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>44069.95</td>\n",
       "      <td>51283.14</td>\n",
       "      <td>197029.42</td>\n",
       "      <td>California</td>\n",
       "      <td>89949.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>15505.73</td>\n",
       "      <td>127382.30</td>\n",
       "      <td>35534.17</td>\n",
       "      <td>New York</td>\n",
       "      <td>69758.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1000.23</td>\n",
       "      <td>124153.04</td>\n",
       "      <td>1903.93</td>\n",
       "      <td>Florida</td>\n",
       "      <td>64926.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1315.46</td>\n",
       "      <td>115816.21</td>\n",
       "      <td>297114.46</td>\n",
       "      <td>California</td>\n",
       "      <td>49490.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>0.00</td>\n",
       "      <td>135426.92</td>\n",
       "      <td>0.00</td>\n",
       "      <td>Florida</td>\n",
       "      <td>42559.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>542.05</td>\n",
       "      <td>51743.15</td>\n",
       "      <td>0.00</td>\n",
       "      <td>New York</td>\n",
       "      <td>35673.41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>0.00</td>\n",
       "      <td>116983.80</td>\n",
       "      <td>45173.06</td>\n",
       "      <td>California</td>\n",
       "      <td>14681.40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>23893.98</td>\n",
       "      <td>95828.11</td>\n",
       "      <td>139539.01</td>\n",
       "      <td>California</td>\n",
       "      <td>87192.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>39284.63</td>\n",
       "      <td>146995.40</td>\n",
       "      <td>205349.40</td>\n",
       "      <td>Florida</td>\n",
       "      <td>134307.35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>19242.01</td>\n",
       "      <td>156545.94</td>\n",
       "      <td>215069.15</td>\n",
       "      <td>New York</td>\n",
       "      <td>112278.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>30360.16</td>\n",
       "      <td>93288.41</td>\n",
       "      <td>205511.67</td>\n",
       "      <td>California</td>\n",
       "      <td>84608.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>26480.77</td>\n",
       "      <td>98452.15</td>\n",
       "      <td>174999.30</td>\n",
       "      <td>Florida</td>\n",
       "      <td>78449.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>21967.49</td>\n",
       "      <td>92876.33</td>\n",
       "      <td>145419.50</td>\n",
       "      <td>California</td>\n",
       "      <td>65200.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>28532.28</td>\n",
       "      <td>128717.80</td>\n",
       "      <td>156547.42</td>\n",
       "      <td>New York</td>\n",
       "      <td>61745.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>30745.49</td>\n",
       "      <td>122699.52</td>\n",
       "      <td>170069.77</td>\n",
       "      <td>Florida</td>\n",
       "      <td>67245.22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>0.00</td>\n",
       "      <td>108679.17</td>\n",
       "      <td>304981.62</td>\n",
       "      <td>New York</td>\n",
       "      <td>112784.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>51363.51</td>\n",
       "      <td>103057.49</td>\n",
       "      <td>214634.81</td>\n",
       "      <td>California</td>\n",
       "      <td>92780.68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>39709.56</td>\n",
       "      <td>127382.30</td>\n",
       "      <td>35534.17</td>\n",
       "      <td>New York</td>\n",
       "      <td>79653.20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>41859.62</td>\n",
       "      <td>111841.88</td>\n",
       "      <td>296868.93</td>\n",
       "      <td>Florida</td>\n",
       "      <td>87558.09</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    R&D Spend  Administration  Marketing Spend       State     Profit\n",
       "0   145372.41       118671.85        383199.62    New York  182901.99\n",
       "1   119943.24       156547.42        256512.92     Florida  132602.65\n",
       "2    86419.70       153514.11             0.00    New York  122776.86\n",
       "3    66051.52       182645.56        118148.20     Florida  103282.38\n",
       "4    20229.59        65947.93        185265.10  California   81229.06\n",
       "5    55493.95       103057.49        214634.81     Florida   96778.92\n",
       "6    46014.02        85047.44        205517.64    New York   96479.51\n",
       "7    44069.95        51283.14        197029.42  California   89949.14\n",
       "8    15505.73       127382.30         35534.17    New York   69758.98\n",
       "9     1000.23       124153.04          1903.93     Florida   64926.08\n",
       "10    1315.46       115816.21        297114.46  California   49490.75\n",
       "11       0.00       135426.92             0.00     Florida   42559.73\n",
       "12     542.05        51743.15             0.00    New York   35673.41\n",
       "13       0.00       116983.80         45173.06  California   14681.40\n",
       "14   23893.98        95828.11        139539.01  California   87192.80\n",
       "15   39284.63       146995.40        205349.40     Florida  134307.35\n",
       "16   19242.01       156545.94        215069.15    New York  112278.57\n",
       "17   30360.16        93288.41        205511.67  California   84608.19\n",
       "18   26480.77        98452.15        174999.30     Florida   78449.95\n",
       "19   21967.49        92876.33        145419.50  California   65200.33\n",
       "20   28532.28       128717.80        156547.42    New York   61745.16\n",
       "21   30745.49       122699.52        170069.77     Florida   67245.22\n",
       "22       0.00       108679.17        304981.62    New York  112784.50\n",
       "23   51363.51       103057.49        214634.81  California   92780.68\n",
       "24   39709.56       127382.30         35534.17    New York   79653.20\n",
       "25   41859.62       111841.88        296868.93     Florida   87558.09"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 2: 编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入数据预处理所需的库\n",
    "# 提示: 需要从 sklearn.preprocessing 导入 LabelEncoder 和 OneHotEncoder\n",
    "# 从 sklearn.compose 导入 ColumnTransformer\n",
    "\n",
    "# 对分类数据进行编码\n",
    "# 提示: 使用 LabelEncoder 对第四列（假设列的索引从 0 开始）的分类数据进行标签编码\n",
    "# 使用 ColumnTransformer 和 OneHotEncoder 对同一列进行独热编码\n",
    "# 注意设置 remainder='passthrough' 以保留其他列\n",
    "\n",
    "# 应用编码转换\n",
    "# 提示: 首先使用 LabelEncoder 的 fit_transform 方法对 X 的第四列进行转换\n",
    "# 然后创建 ColumnTransformer 实例，并使用 fit_transform 方法对整个 X 进行转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.0, 0.0, 1.0, 145372.41, 118671.85, 383199.62],\n",
       "       [0.0, 1.0, 0.0, 119943.24, 156547.42, 256512.92],\n",
       "       [0.0, 0.0, 1.0, 86419.7, 153514.11, 0.0],\n",
       "       [0.0, 1.0, 0.0, 66051.52, 182645.56, 118148.2],\n",
       "       [1.0, 0.0, 0.0, 20229.59, 65947.93, 185265.1],\n",
       "       [0.0, 1.0, 0.0, 55493.95, 103057.49, 214634.81],\n",
       "       [0.0, 0.0, 1.0, 46014.02, 85047.44, 205517.64],\n",
       "       [1.0, 0.0, 0.0, 44069.95, 51283.14, 197029.42],\n",
       "       [0.0, 0.0, 1.0, 15505.73, 127382.3, 35534.17],\n",
       "       [0.0, 1.0, 0.0, 1000.23, 124153.04, 1903.93],\n",
       "       [1.0, 0.0, 0.0, 1315.46, 115816.21, 297114.46],\n",
       "       [0.0, 1.0, 0.0, 0.0, 135426.92, 0.0],\n",
       "       [0.0, 0.0, 1.0, 542.05, 51743.15, 0.0],\n",
       "       [1.0, 0.0, 0.0, 0.0, 116983.8, 45173.06],\n",
       "       [1.0, 0.0, 0.0, 23893.98, 95828.11, 139539.01],\n",
       "       [0.0, 1.0, 0.0, 39284.63, 146995.4, 205349.4],\n",
       "       [0.0, 0.0, 1.0, 19242.01, 156545.94, 215069.15],\n",
       "       [1.0, 0.0, 0.0, 30360.16, 93288.41, 205511.67],\n",
       "       [0.0, 1.0, 0.0, 26480.77, 98452.15, 174999.3],\n",
       "       [1.0, 0.0, 0.0, 21967.49, 92876.33, 145419.5],\n",
       "       [0.0, 0.0, 1.0, 28532.28, 128717.8, 156547.42],\n",
       "       [0.0, 1.0, 0.0, 30745.49, 122699.52, 170069.77],\n",
       "       [0.0, 0.0, 1.0, 0.0, 108679.17, 304981.62],\n",
       "       [1.0, 0.0, 0.0, 51363.51, 103057.49, 214634.81],\n",
       "       [0.0, 0.0, 1.0, 39709.56, 127382.3, 35534.17],\n",
       "       [0.0, 1.0, 0.0, 41859.62, 111841.88, 296868.93]], dtype=object)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 3: 虚拟变量陷阱"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = X[: , 1:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  Step 4: 拆分数据集为训练集和测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  Step 5: 模型训练和预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LinearRegression</label><div class=\"sk-toggleable__content\"><pre>LinearRegression()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "regressor = LinearRegression()\n",
    "regressor.fit(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = regressor.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([102008.97506796,  94343.31093613,  60471.81361201,  72853.93269819,\n",
       "       101824.03421399,  47993.83304325])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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l5eXw4zQpXz++efMnTuXOnXqOLT7+fkxZMiQfO9l165dXe6wpYgzKCSJSIE+//xzbr/9du677z48PDxYunQp3377LQEBAaSmpnLttdcW6nUmTJjAmjVr2LhxI/Xr16dOnTrUqlXLHn4qV65MrVq1uPbaa6lfvz7BwcHYbDa2bNnCsGHDaNiwof21PD2tf7LatGmTbybq1KlTfzmTcrFy5crRpUsXhzPqfv/9d7Zv324/s+z8+fN06dKFChUq8PnnnzN69GjefPPNfLM6f+WHH34gOzubSZMm0bp1a7KzswkJCeHmm292eNy5c+eoV69ega8xePBgZs6cSfv27fP1FSbMbNq0iVtuuYVHH33Uod3T05Phw4fney8//vjjIr2XImWVQpKIFOiee+5h/fr1fPvtt8TExJCTk0OdOnU4deoU586dc5jh+Ss1atSgbdu29n2Oevbsycsvv+zwmKeffponnnjCft/T05MVK1Zcctbmm2++wRjjcAsPDy/yGHv16sXq1avtC5RXrlxJ7dq1adGiBQCpqamcOnWKO++8k7Zt2/LII4+wZs0amjZtWujvkXuaf66kpCQaNGjATTfdZG87f/4858+fp0qVKpd8nYceeohatWrZt0BITU0lKyuLkJAQgAL3W8r16quvsnTpUnvIvLjv4veyR48ehR6fSFmmkCQi+Rw6dIijR49Sv359Pv/8cwYPHkxSUhKJiYns2rULsA7VJCYmkpiYyLFjx4iPj7cvAL5Y5cqV+e2330hISGDZsmVUq1bNob9KlSrMmTOHQ4cO2dsqVKhQ4Ic6WAEud8+h3NuZM2eKPM5//etfnD9/nu+++w6wDuPdd9999v7Q0FB69erFs88+y5133sm4ceOoWLEi1113XZG/V65KlSrxzTffEBwcbN8g8ujRo3h4eFC1alX748xFm0fGxcVx3XXXceDAAcDaCwmwv5cXrk26mKen5yUXYr/11lv53ktXXNsl4gwKSSKST+vWralRowZVq1alSZMmDBgwgKpVq1K1alX7KeL16tWzt1WvXp3atWvnWzOzfft27rnnHmJjY+nSpQszZsygUqVKPPLIIw6Pe/bZZwkJCeG1114rVH0fffQRhw4dcrhdzplt/v7+dO/enc8++4ysrCzWrl3rEJIAFi1axJo1a2jRogUrV66kYcOGLFu2rMjfqyC5i9+3bt1KjRo1CAwMtPddvCnm+++/T7ly5WjUqBGvvvoq3333HZUrV8bX15fXXnuNxo0bX9Zmmi+88EK+9/Jf//rXlQ9OpAxQSBKRfA4cOEB2djY2m83hMMzhw4cJDQ1l9uzZpKSk2Nuzs7NJS0tzOL0dIDIykgMHDjBhwgQeeugh3n77bZ599tl8p6kHBQXx1FNP8cEHH3D48OG/re9Sa5Iux3333cdnn33GV199RY0aNWjcuLG9b/fu3QwbNoy2bdvy8ssv2w89XnyJlMsVERFBUFAQ8+fP59ZbbwWsPao6duzosCYoMzOTefPm8cILL1ClShVefvllVq9eTadOnZg/fz533XUXderUITMzs8gh6VJrkkREIUlEClCuXDn7qfq5tm3bRrt27WjXrh3R0dFUr16dxx9/nN9//x1vb28CAwPt4Sc7OxuA8PBwdu/ezdNPP81bb73F+fPnGThwYIHf8/HHH8fT05MPPvggX9/Fh56Ka00SwD//+U8SExOZNGlSvlmk8uXLM378eF555RU2bdrEhx9+SFxcHLVr176s73WxL7/8Em9vb1atWsXjjz9Ov3792LBhA+vWrSMsLMz+uGnTpuHp6cnDDz8MQHx8PJ988gmtW7fmqaeeYsCAAQC8+eabrF69+i+/58XvpdYkiVyaNpMUkUvKzs5m7dq1zJkzh08++YQHH3yQadOm4eXlxdSpU3nllVeYP38+gwYNYtCgQZQrV87+vIvddtttREZGUqFCBSZNmmTfcyl3d+9KlSqxbdu2fDt8Z2VlkZmZyf79++1rlBISEuxbCOSy2WwcPXqU3bt3849//KPQp7D7+Phw1113MWvWrHyHCyMjI/nkk08YNWoU48ePtx+eGz16dKFeG+CPP/5g//79bNmyJd8hwdmzZ/P0008zfvx4mjdvziOPPEK/fv348ssveeedd/D39+fEiROMGTOGgQMH2t+roUOHUrduXQYMGMA111xD165d6dq1q/2svEvtlJ37Xh45coS0tDTOnTvH6dOn872XaWlpnD59mri4OCpWrEjFihULPV6RMqWULn8iIm7k66+/Nv/6179MaGioAUz79u3N2rVr8z0uKyvLjBkzxvj5+Zlq1aqZX375xRhjTEJCgsO12y42duxYU7duXfPQQw8VeL22C7Vt29YMHDjQNG/e3AQFBZmQkJBL3sqXL2/8/PzMwYMHr/g9KC7JyckmODjY3HDDDeabb74xxhhz8uRJc9NNN5nQ0FDz4YcfOjz+999/N82aNTNdunQxxhizevVqExQUZA4dOmSMMWbixIkGMCtXrrQ/54EHHjA33nijMcaYBQsWmA4dOhjAnDp1yuG1R4wYYa677jrz/PPPm8DAQBMcHHzJ9zI4ONgEBASYmTNnltRbI+LyPIy5aO5VRAR44okniIyMpGfPnkRGRv7lYw8cOMCyZcu0S3MRbNq0iTp16hR42n9qaipnzpyx70WVmJhof1xsbCxxcXGMGDHC/vikpCSys7OpVq0a69atY9KkSfTr14977723dAYjUkYpJImIiIgUQAu3RURERAqgkCQiIiJSAIUkERERkQIoJImIiIgUQPskXSabzcaxY8coX768rpYtIiLiJowxpKamUq1atUteHzKXQtJlOnbsGDVq1HB2GSIiInIZjhw5wjXXXPOXj1FIukzly5cHrDc5ODjYydWIiIhIYaSkpFCjRg375/hfUUi6TLmH2IKDgxWSRERE3Exhlspo4baIiIhIARSSRERERAqgkCQiIiJSAIUkERERkQIoJImIiIgUQCFJREREpAAKSSIiIiIFUEgSERERKYBCkoiIiEgBFJJERERECqCQJCIiIlIAhSQRERGRAigkiYiIiBRAIUlERERchzEwYQKsWOHsSvB2dgEiIiIiACQnQ9++8NlnEBoKO3dCzZpOK0czSSIiIuIaAgLgxAnr6zNnYM0ap5ajkCQiIiKuwdcXFi+GunXh88/h0UedWo4Ot4mIiIhzJCXB6dNw3XV5bZGRsG8feDs/omgmSURERErfxo3QpAl07w5nzzr2uUBAAoUkERERKU05OfDqq9ChAxw7BgcOwNChzq6qQK4R1URERKTsS0y0zl778su8to4dXTYkaSZJRERESt6XX1qH13IDkqcnjB5tncFWpYpTS7sUp4WkkydPEhkZyaFDh+xty5cvp3bt2nh7e9OkSRP27dtn79u7dy9RUVGEhoYyePBgjDH2vo0bN1K/fn0iIiKYMGGCw/eJjY2lZs2aVKtWjUWLFjn0TZkyhcqVK1O7dm3Wr19fMgMVERG5muXkwMiRcOut8PvvVlvVqlZYGj4cvLycW99fcEpIOnnyJF26dHEISL/88gsPPfQQr7/+OgkJCfzjH/+gf//+AGRmZtK1a1eaN2/O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8uV4e+v/oyLuSH9zRaTM6Nu3Lzk5ORhj6Nq1Ky1btmTixIkA1KpVy/64xx57zOF5KSkpbN26lY8//pgHHniAL7/8Ek9PTzIzM8nMzCQ4OBhjDJmZmSQkJHDmzBleeOEFKleubH+NI0eO0L9/f4fXfuyxx0hJSSnZQYtIiVFIEpEypVOnTnTp0oXBgwdz8803c+7cOb7//nuqV69+yecEBQXRokUL1q1bx0cffWRvnzt3LrGxsXz22WcOj58zZw5dunThjz/+sLd5enoyYsQIxo8fb29LSkoiJiam+AYnIqVKh9tEpEwZNmwYkyZN4s477+Tmm2+mU6dOJCYmcu21117yOZ6engwbNozRo0cDsHTpUrZt22bvj4uLcwhPzz77LO+9916+1xk9ejQHDx6033r37l2MIxOR0qaQJCJlgjGGc+fO0aFDB7Zt28btt99u70tISKBGjRr2++fPn3dYXwTWeqb//e9/nDp1iqeffpr9+/fb+/bt28eAAQM4c+YMAB4eHpQrVy5fDa+++ioNGza035YsWVLcwxSRUqSQJCJlwm+//UZoaChhYWE0bNiQYcOGERERQVhYGEuXLuWZZ54hIiLC3pZ7ij7A4sWL6dChA506dWLt2rWUL1+e+++/397fo0cPrrvuOt54442/rGH48OHs3bvXfrv33ntLbLwiUvK0JklEyoSaNWuSkZGRr/2FF17gl19+YdSoUdSrV4/AwECH/pycHFq0aEGVKlW45557aNq0KS+//LLDHklgHcbr3bs3//nPf6hUqVKBNbz66qu8++679vvHjh3TmiQRN6aZJBEpk3799VfuvfdevvzyS2bNmsVLL71E3bp1ef/99x1O8c/OzqZu3br8+9//5tChQ1SvXp3777+f7777jm3bttnDUteuXRk0aBA2m83+3JycHLKyssjOzgYuPZOUmZlZiiMXkeLiYYwxzi5CRKQ4bNq0iS1btrBixQp27NjBo48+ypgxY+yzR6tWreK5557Dy8uLyZMn07FjRzw9PYmPj3fYIgDgoYceYuvWrQwfPpxevXoV+P06duxI69atee+99/Dz8ytw00ibzYa3tze//vprsY9XREqWQpKIlBmrVq1i8uTJ3HXXXfTo0YPw8PB8j8nMzOS1117j5ptvpnPnzk6oUkTchUKSiIiISAG0JklERESkAApJIiIiIgVQSBIREREpgEKSiIiISAEUkkREREQKoJAkIiIiUgCFJBEREZECKCSJiIiIFEAhSURERKQA/x87VYLC81wntQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.family'] = 'SimHei'  # 设置图表的字体为SimHei，适用于显示中文\n",
    "plt.rcParams['font.size'] = 10  # 设置图表中的字体大小为10\n",
    "\n",
    "plt.scatter(Y_test, y_pred)\n",
    "plt.plot([min(Y_test), max(Y_test)], [min(Y_test), max(Y_test)], color='red', linestyle='--', lw=2)\n",
    "plt.xlabel(\"实际值\")\n",
    "plt.ylabel(\"预测值\")\n",
    "plt.title(\"实际值 vs 预测值\")\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
